package com.jy.rhin.config;

import com.alibaba.nacos.spring.context.annotation.config.NacosRefresh;
import com.jy.api.hospital.HospitalAPI;
import com.jy.api.hospital.HospitalAPIImpl;
import com.jy.api.misc.MiscAPI;
import com.jy.api.misc.MiscAPIImpl;
import com.jy.api.okhttp.HospitalClient;
import com.jy.api.okhttp.MiscClient;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

/**
 * 值域术语 请求信息
 *@className(类名称):  MiscConfig
 *@description(类描述):
 *@author(创建人):  zsh
 *@createDate(创建时间):  2024年8月6日 下午2:24:16
 *@updateUser(修改人):  zsh
 *@updateDate(修改时间):  2024年8月6日 下午2:24:16
 *@updateRemark(修改备注):
 *@version(版本):  v1.0
 */
@Slf4j
@Getter
@Setter
@Component
@NacosRefresh
@Configuration
@ConfigurationProperties(prefix = "com.cowinhealth.misc")
public class MiscConfig {

	/**
	 * 值域相关 url
	 */
	private Url url;

	@Getter
	@Setter
	public static class Url {
		/**
		 * 查询集值映射 IST-TR4 url
		 */
		private String selectTR4Path;

		/**
		 * 获取集值映射 IST-TR3 URL
		 */
		private String findTR3Path;

		/**
		 * 查询值集 IST-TR2 url
		 */
		private String selectTR2Path;

		/**
		 * 获取值集 IST-TR1 URL
		 */
		private String findTR1Path;

		/**
		 * 根据值域标识符获取代码 URL
		 */
		private String findByIdentifierPath;

		/**
		 * 根据值域标识符和code获取value URL
		 */
		private String selectByIdeAndCodePath;

		/**
		 * 根据值域标识符获取代码（列表） URL
		 */
		private String selectByIdentifierListPath;

		/**
		 * 获取区划代码 URL
		 */
		private String findDCodeByIdentifierPath;

		/**
		 * 根据值域标识符判断是否存在该值域 URL
		 */
		private String getExistByRangePath;

		/**
		 * 根据编码系统标识符及值、值含义判断值是否在编码系统中存在 URL
		 */
		private String getExistByEncodePath;

		/**
		 * 根据标识符查看详情 URL
		 */
		private String findDetailByIdentifierPath;
	}

	@Bean
	@ConditionalOnMissingBean
	public MiscAPI miscAPI(MiscClient client) {
		return new MiscAPIImpl(client);
	}

}
